package com.itmk.utils;

import com.itmk.status.StatusCode;

/**
 * 数据返回工具类
 */
public class ResultUtils {

    /**
     * 无参数返回成功
     * @return ResultVo
     */
    public static ResultVo success() {
        return vo(null, StatusCode.SUCCESS_CODE, null);
    }

    /**
     * 带消息返回成功
     * @param msg 消息
     * @return ResultVo
     */
    public static ResultVo success(String msg) {
        return vo(msg, StatusCode.SUCCESS_CODE, null);
    }

    /**
     * 带消息和数据返回成功
     * @param msg 消息
     * @param data 数据
     * @return ResultVo
     */
    public static ResultVo success(String msg, Object data) {
        return vo(msg, StatusCode.SUCCESS_CODE, data);
    }

    /**
     * 自定义状态码返回成功
     * @param msg 消息
     * @param code 状态码
     * @param data 数据
     * @return ResultVo
     */
    public static ResultVo success(String msg, int code, Object data) {
        return vo(msg, code, data);
    }

    /**
     * 构建通用返回对象
     * @param msg 消息
     * @param code 状态码
     * @param data 数据
     * @return ResultVo
     */
    public static ResultVo vo(String msg, int code, Object data) {
        return new ResultVo(msg, code, data);
    }

    /**
     * 无参数返回错误
     * @return ResultVo
     */
    public static ResultVo error() {
        return vo(null, StatusCode.ERROR_CODE, null);
    }

    /**
     * 带消息返回错误
     * @param msg 消息
     * @return ResultVo
     */
    public static ResultVo error(String msg) {
        return vo(msg, StatusCode.ERROR_CODE, null);
    }

    /**
     * 自定义状态码返回错误
     * @param msg 消息
     * @param code 状态码
     * @return ResultVo
     */
    public static ResultVo error(String msg, int code) {
        return vo(msg, code, null);
    }

    /**
     * 自定义状态码和数据返回错误
     * @param msg 消息
     * @param code 状态码
     * @param data 数据
     * @return ResultVo
     */
    public static ResultVo error(String msg, int code, Object data) {
        return vo(msg, code, data);
    }

    /**
     * 带数据返回错误
     * @param msg 消息
     * @param data 数据
     * @return ResultVo
     */
    public static ResultVo error(String msg, Object data) {
        return vo(msg, StatusCode.ERROR_CODE, data);
    }
}